RAIS  3.2
C:/Projekte/RAIS/common/RADEVClasses/RADEVTable.cs
Go to the documentation of this file.
00001 using System;
00002 using System.Collections.Generic;
00003 using System.Text;
00004 using System.Data.OleDb;
00005 using System.Data.Common;
00006 using System.Data;
00007 using System.Data.SqlClient;
00008 using System.Configuration;
00009 
00010 namespace RAIS.Common.RADEVClasses
00011 {
00012     public abstract class RADEVTable
00013     {
00014         #region Fileds
00015         protected static string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\RADEVData.mdb;";
00016 
00017         protected string _IAEAEventID = "";
00018         #endregion
00019         #region Properties
00020 
00021 
00022 
00023         public string IAEAEventID { get { return _IAEAEventID; } }
00024         #endregion
00025         #region Public methods
00026 
00027 
00028 
00029 
00030 
00031 
00032         public static RADEVTable CreateTable(string provderName, string tableName)
00033         {
00034             ConnectionStringSettings connectionSet =
00035                     ConfigurationManager.ConnectionStrings["RAISConnectionString"];
00036             connectionString = connectionSet.ConnectionString;
00037 
00038             RADEVTable instance;
00039             using (DbConnection connection = GetConnection(provderName))
00040             {
00041                 using (DbCommand command = GetCommand(tableName, connection, out instance))
00042                 {
00043                     using (DbDataReader reader = command.ExecuteReader())
00044                     {
00045                         while (reader.Read())
00046                         {
00047                             instance.AddNewRow(reader);
00048                         }
00049                     }
00050                 }
00051             }
00052             return instance;
00053         }
00058         public abstract List<RADEVTable> GetData();
00063         public abstract string GetSourceName();
00069         public abstract bool IsValid(RADEVCriterias criterias);
00075         public object GetDataList(RADEVCriterias criterias)
00076         {
00077             List<RADEVTable> ret = new List<RADEVTable>();
00078             foreach (RADEVTable value in GetData())
00079             {
00080                 if (value.IsValid(criterias))
00081                     ret.Add(value);
00082             }
00083             return ret;
00084         }
00085         #endregion
00086         #region Private methods
00087         private static DbCommand GetCommand(string tableName, DbConnection connection,out RADEVTable instance)
00088         { 
00089             DbCommand command;
00090 
00091             switch (tableName)
00092             {
00093                 case "EventMaster":
00094                     instance = EventMaster.CreateInstatce();
00095                     break;
00096                 case "EventWorkPublicDosimetry":
00097                     instance = EventWorkPublicDosimetry.CreateInstatce();
00098                     break;
00099                 case "RadiationGenerator":
00100                     instance = RadiationGenerator.CreateInstatce();
00101                     break;
00102                 case "RadiationDevice":
00103                     instance = RadiationDevice.CreateInstatce();
00104                     break;
00105                 case "RadiationSource":
00106                     instance = RadiationSource.CreateInstatce();
00107                     break;
00108                 case "EventWorkerPublicType":
00109                     instance = EventWorkerPublicType.CreateInstatce();
00110                     break;
00111                 case "EventWorkerPublicCauses":
00112                     instance = EventWorkerPublicCauses.CreateInstatce();
00113                     break;
00114                 default:
00115                     throw new Exception("Don't support this report");
00116             }
00117 
00118             if (connection is OleDbConnection)
00119                 command = new OleDbCommand(instance.GetCommandString(), connection as OleDbConnection);
00120             else if(connection is SqlConnection)
00121                 command = new SqlCommand(instance.GetCommandString(), connection as SqlConnection);
00122             else
00123                 throw  new Exception("Don't support this provider");
00124 
00125 
00126             return command;
00127         }
00128         private static DbConnection GetConnection(string provderName)
00129         {
00130             DbConnection con;
00131             if(provderName=="access")
00132                 con = new OleDbConnection(connectionString);
00133             else if (provderName=="sql")
00134                 con = new SqlConnection(connectionString);
00135             else
00136                 throw new Exception("Don't support this provider");
00137             con.Open();
00138             return con;
00139         }
00140         protected abstract string GetCommandString();
00141         protected abstract void AddNewRow(IDataReader reader);
00142         protected RADEVTable(string iAEAEventID)
00143         {
00144             _IAEAEventID = iAEAEventID;
00145         }
00146         protected RADEVTable() { }
00147         #endregion
00148     }
00149 }